Semiconductor memory is widely used in various electronic devices such as mobile phones, digital cameras, personal digital assistants, SSDs, medical electronics, mobile computing devices, and non-mobile computing devices. Semiconductor memory may comprise non-volatile memory or volatile memory. A non-volatile memory allows information to be stored and retained even when the non-volatile memory is not connected to a source of power (e.g., a battery).
There is a finite possibility that a bit of data that was programmed is read back incorrectly. Such errors can occur for a variety of reasons. Such errors are referred to as a raw, or uncorrected, bit error rate (BER). Typically, when data is stored in non-volatile memory, a unit of data is encoded by adding some redundant bits to the unit of data. The combination of the unit of data and the redundant bits is referred to as a codeword. When the codeword is later read, a decoder is used to decode the codeword. The decoder is able to correct at least some of the errors. However, if the raw BER is too high, then the decoder might not be able to correct all of the errors.